package com.jvyou.thread.d13waitandnotify;

import java.util.concurrent.ArrayBlockingQueue;

/**
 * @author 橘柚
 * @version 1.0-SNAPSHOT
 * @Date 2024/7/31 14:24
 * @Description 消费者线程，用于消费食物
 */
public class Consumer extends Thread {

    private ArrayBlockingQueue<String> queue;

    public Consumer(ArrayBlockingQueue<String> queue) {
        this.queue = queue;
    }

    @Override
    public void run() {
        while (true) {
            try {
                // 从队列里面取食物
                // 注意不用加锁，queue.take() 是阻塞方法，方法内部有锁，如果队列里面没有数据则会一直等待
                String food = queue.take();
                // 打印语句同样在所得内部
                System.out.println("消费者消费了：" + food);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
